Next | Prev | Up | Top | Contents | Index
Programming Slave DMA
In Slave DMA, an EISA card that does not have DMA logic is commanded by the EISA Interface Unit and 82350 chip set (see Figure 17-1) to perform a series of transfers into memory.
The kernel supplies a unique set of functions for managing Slave DMA, unrelated to the DMA functions for Bus-master DMA. The functions that operate on EISA DMA maps are summarized in Table 17-4.
Functions for EISA DMA
Function | Header Files | Can Sleep | Purpose |
---|
eisa_dma_disable(D3) | eisa.h & types.h | N | Disable recognition of hardware requests on a DMA channel. |
eisa_dma_enable(D3) | eisa.h & types.h | N | Enable recognition of hardware requests on a DMA channel. |
eisa_dma_free_buf(D3) | eisa.h & types.h | N | Free a previously allocated DMA buffer descriptor. |
eisa_dma_free_cb(D3) | eisa.h & types.h | N | Free a previously allocated DMA command block. |
eisa_dma_get_buf(D3) | eisa.h & types.h | Y | Allocate a DMA buffer descriptor. |
eisa_dma_get_cb(D3) | eisa.h & types.h | Y | Allocate a DMA command block. |
eisa_dma_prog(D3) | eisa.h & types.h | Y | Program a DMA operation for a subsequent software request. |
eisa_dma_stop(D3) | eisa.h & types.h | N | Stop software-initiated DMA operation and release channel. |
eisa_dma_swstart(D3) | eisa.h & types.h | Y | Initiate a DMA operation via software request. |
The EISA attachment hardware has many options for performing Slave DMA, and most of these options are reflected in the contents of the eisa_dma_cb and eisa_dma_buf data structures (see the eisa_dma_buf(D4) and eisa_dma_cb(D4) reference pages, in addition to the reference pages listed in Table 17-4). By setting appropriate values declared in sys/eisa.h into these structures, you can program most varieties of Slave DMA.
Next | Prev | Up | Top | Contents | Index